/******************************************************************************
*@file     ec_bsp_pwm.c
*@brief    PWM控制屏幕背光的函数
*@author   zhjh
*@version  1.0
*@date     2023年12月17日
*
*@copyright  Copyright (c) 2023 天津柯迪斯科极有限公司 All rights reserved.
*
*@par 修改日志:
*<table>
*<tr><th>Date       <th>Version   <th>Author      <th>Description
*<tr><td>2023年12月17日<td>【版本号】     <td>【作者】     <td>【日志】
*</table>
亮度等级和
******************************************************************************/
#include "ec_bsp_pwm.h"
#include "esp_check.h"

 /******************************************************************************
** 功  能：设置背光亮度百分比
** 参  数：percent-亮度百分比，0-100%
** 返回值：无
** 备  注：
******************************************************************************/
void ec_bsp_pwm_set_bl(uint8_t percent)
{
    // ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE,LEDC_CHANNEL_0,256 * percent / 100));
    // ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE,LEDC_CHANNEL_0));      /*先设置占空比，然后更新*/
    printf("bl:%d,%d\n", percent,256 * lcd_duty_array[percent]/100); 
    ESP_ERROR_CHECK(ledc_set_duty(LEDC_MODE, LEDC_CHANNEL, 256 * lcd_duty_array[percent]/100));
    // Update duty to apply the new value
    ESP_ERROR_CHECK(ledc_update_duty(LEDC_MODE, LEDC_CHANNEL));   
}
/******************************************************************************
** 功  能：根据背光等级，获取对应的百分比亮度
** 参  数：无
** 返回值：背光百分比数值
** 备  注：
******************************************************************************/
uint8_t ec_bsp_set_bl(uint8_t bl)
{
    if(bl > 5)
    {
        bl = 5;
    }
    ec_bsp_pwm_set_bl(bl);
    return 1;
}
/******************************************************************************
** 功  能：PWM模块初始化
** 参  数：无
** 返回值：无
** 备  注：
******************************************************************************/
void ec_bsp_pwm_init(void)
{
	// ledc_timer_config_t     lxPWM_TIMER_Init;
    // ledc_channel_config_t   lxPWM_CHANNEL_Init;

    // lxPWM_TIMER_Init.speed_mode      = LEDC_LOW_SPEED_MODE;
    // lxPWM_TIMER_Init.timer_num       = LEDC_TIMER_0;
    // lxPWM_TIMER_Init.freq_hz         = 1000;                    /*PWM频率，1KHz*/
    // lxPWM_TIMER_Init.duty_resolution = LEDC_TIMER_8_BIT,        /*占空比分辨率，8Bit就是0-127*/
    // lxPWM_TIMER_Init.clk_cfg         = LEDC_AUTO_CLK;

    // ESP_ERROR_CHECK(ledc_timer_config(&lxPWM_TIMER_Init));

    // lxPWM_CHANNEL_Init.gpio_num   = PWM_IO_NUM;                 /*背光PWM输出IO*/
    // lxPWM_CHANNEL_Init.speed_mode = LEDC_LOW_SPEED_MODE;
    // lxPWM_CHANNEL_Init.channel    = LEDC_CHANNEL_0;
    // lxPWM_CHANNEL_Init.intr_type  = LEDC_INTR_DISABLE;
    // lxPWM_CHANNEL_Init.timer_sel  = LEDC_TIMER_0;//0;
    // lxPWM_CHANNEL_Init.duty       = 0;                          /*初始占空比，此处的最大值，和占空比分辨率有关。8Bit分辨率，最大128*/
    // lxPWM_CHANNEL_Init.hpoint     = 0;

    // ESP_ERROR_CHECK(ledc_channel_config(&lxPWM_CHANNEL_Init));

        // Prepare and then apply the LEDC PWM timer configuration
    ledc_timer_config_t ledc_timer = {
        .speed_mode       = LEDC_MODE,
        .timer_num        = LEDC_TIMER,
        .duty_resolution  = LEDC_DUTY_RES,
        .freq_hz          = LEDC_FREQUENCY,  // Set output frequency at 1 kHz
        .clk_cfg          = LEDC_AUTO_CLK
    };
    ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));

    // Prepare and then apply the LEDC PWM channel configuration
    ledc_channel_config_t ledc_channel = {
        .speed_mode     = LEDC_MODE,
        .channel        = LEDC_CHANNEL,
        .timer_sel      = LEDC_TIMER,
        .intr_type      = LEDC_INTR_DISABLE,
        .gpio_num       = PWM_IO_NUM,
        .duty           = 0, // Set duty to 0%
        .hpoint         = 0
    };
    ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
    
}
